package com.bestcem.xm.member.grpc.service.param.project;

import com.bestcem.xm.common.core.constant.RegTypes;
import com.bestcem.xm.member.grpc.service.param.extendfield.ExtendFieldValueParam;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * @author dc.wang <dc.wang@idiaoyan.com>
 * @version V1.0
 * @description 创建联系人项目请求参数
 * @date 2021/7/19
 */
@Getter
@Setter
@ToString
public class CreateProjectParam {
    /**
     * 企业标识
     */
    @NotBlank
    @Pattern(regexp = RegTypes.OBJECT_ID, message = "企业标识格式错误")
    private String orgId;

    /**
     * 联系人标识
     */
    @NotBlank
    @Pattern(regexp = RegTypes.OBJECT_ID, message = "联系人标识格式错误")
    private String memberId;

    /**
     * 项目代码
     */
    private String code;

    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空")
    @Size(max = 20, message = "项目名称最长20个字")
    private String name;

    /**
     * 立项类型
     */
    @Size(max = 8, message = "立项类型最长8个字")
    private String type;

    /**
     * 项目状态
     */
    private String status;

    /**
     * 客户经理名称
     */
    private String accountManager;

    /**
     * 甲方项目经理名称
     */
    @Size(max = 20, message = "甲方项目经理最长20个字")
    private String projectManager;

    /**
     * 项目经理手机号
     */
    private String projectManagerMobile;

    /**
     * 合同编号
     */
    @Size(max = 20, message = "合同编号最长20个字")
    private String contractNo;

    /**
     * 合同对象
     */
    @Size(max = 20, message = "合同对象最长20个字")
    private String contractObj;

    /**
     * 合同金额
     */
    private Long contractMoney;

    /**
     * 立项时间
     */
    private Date projectTime;

    /**
     * 计划开始时间
     */
    private Date programStartTime;

    /**
     * 实际开始时间
     */
    private Date actualStartTime;

    /**
     * 验收时间
     */
    private Date acceptanceTime;

    /**
     * 扩展字段值
     */
    private List<@Valid ExtendFieldValueParam> extendFieldValues;
}
